home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / basic / twotap.exe / TWOTAP.BAS < prev    next >
Encoding:
BASIC Source File  |  1991-12-23  |  18.5 KB  |  738 lines

  1. DEFINT A-Z
  2. DECLARE SUB menu12 ()
  3. DECLARE SUB menu11 ()
  4. DECLARE SUB menu10 ()
  5. DECLARE SUB menu09 ()
  6. DECLARE SUB menu08 ()
  7. DECLARE SUB menu07 ()
  8. DECLARE SUB menu06 ()
  9. DECLARE SUB menu05 ()
  10. DECLARE SUB menu04 ()
  11. DECLARE SUB menu03 ()
  12. DECLARE SUB menu02 ()
  13. DECLARE SUB menu01 ()
  14. DECLARE SUB shareWare ()
  15. DECLARE SUB windowDivider (topLine%, howLong%, atCol%)
  16. DECLARE SUB center (linenumber%, centeredText$)
  17. DECLARE SUB drawBox (row1, col1, row2, col2)
  18. DECLARE SUB FkeySelect (FkeyPressed%)
  19. DECLARE SUB glissUP ()
  20. DECLARE SUB screenTexture ()
  21. DECLARE SUB menuMain ()
  22. DECLARE SUB windowBar (startBar, stopBar)
  23.  
  24. '   twotap2.bas         -   the function key menuing system
  25.  
  26. menuMain
  27.  
  28. '  Author's Notes:
  29. '
  30. ' twotap.BAS  -  the Function Key Menuing System for QuickBASIC and
  31. '                BASIC PDS 7.1
  32. '
  33. '       In my opinion, Microsoft's PDS 7.1 is a dazzler.  I wrote a sizeable
  34. '       application in it and got nothing but compliments for the "very
  35. '       professional" look of the windows, menus.
  36. '
  37. '       I found that that "dazzle" came at a high price in terms of
  38. '       memory management and library management.  A lot of the "quick" and
  39. '       certainly the simple of BASIC went on the altar of the User Inter-
  40. '       face.
  41. '
  42. '       I decided I would NEVER get caught in that trap again, but still a
  43. '       quick and easy menuing system is always called for in any program.
  44. '       My customer support work suggested that even the newest user can
  45. '       handle Function keys with aplomb.  They are clearly marked and there
  46. '       are enough of them to do practically anything.
  47.  '
  48.  '      Hence TWOTAP.BAS  Tap a max of two Function Keys are you are off
  49.  '      and running with an absolute minimum of memory overhead and library
  50.  '      management.
  51.  '
  52.  '      I'd love to see the improvements you make in this program -- but
  53.  '      remember:  we don't want to create a lot of baggage to carry around
  54.  '      to only be used on rare occasions.  Small is beautiful when you need
  55.  '      space for algoritims and arrays that are doing the REAL work while
  56.  '      the operator contemplates your "professional" screen.
  57.  '
  58.  '      I can also envision an approach that would reduce the amount of
  59.  '      code dramatically at -- I'm afraid -- a considerable loss of
  60.  '      clarity.  There IS a lot of duplication in the menus -- and
  61.  '      probably a lot more capacity than you will need (11 X 11 means
  62.  '      the systems "capacity" is 121 selections(!).
  63.  '
  64.  '       BUT, as it stands now, each menu is 'free standing' and a self
  65.  '      contained unit - your app may need to go no deeper than the Main
  66.  '      Menu and the "free standing" nature of the system means you could
  67.  '      just start deleting what you don't need.  If the menus are too
  68.  '      deeply entwined with each other, I'm afraid scaling up or down
  69.  '      might be very complicated.
  70.  '
  71.  '      Kirk Woodward
  72.  '      PO Box 610171
  73.  '      Dallas, TX 75261-0171
  74.  '      CompuServe: 70146,51  Voice: 817/488-4940  FAX: 817/488-4945
  75.  '
  76.  '
  77.  
  78. SUB menu01
  79.  
  80. COLOR 0, 7
  81. CALL drawBox(2, 2, 11, 30)
  82.  
  83.     LOCATE 2, 8: COLOR 15, 0: PRINT " Menu Number One": COLOR 0, 7
  84.     LOCATE 3, 5: PRINT "Go do Task #1        F1"
  85.     LOCATE 4, 5: PRINT "Go do Task #2        F2"
  86.     LOCATE 5, 5: PRINT "Go do Task #3        F3"
  87.     LOCATE 6, 5: PRINT "Go do Task #4        F4"
  88.     LOCATE 7, 5: PRINT "Go do Task #5        F5"
  89.     LOCATE 8, 5: PRINT "Go do Task #6        F6"
  90.     windowBar 2, 30
  91.     LOCATE 10, 5: PRINT "Quit               F10"
  92.  
  93.     FkeySelect FkeyPressed
  94.  
  95.     '   'dim' the menu title to shift operator's attention
  96.  
  97.     LOCATE 2, 8: COLOR 7, 0: PRINT " Menu Number One": COLOR 0, 7
  98.  
  99.     SELECT CASE FkeyPressed
  100.  
  101.         CASE 1
  102.         CASE 2
  103.         CASE 3
  104.         CASE 4
  105.         CASE 5
  106.         CASE 6
  107.         CASE 10: EXIT SUB
  108.         CASE ELSE
  109.     END SELECT
  110.  
  111. '  each of the menus has this 'advisory' routine at the end of
  112. '  the SELECT CASE block, you probably won't need it and good
  113. '  programmming practices would suggest it should be in a separate
  114. '  SUB rather than being typed 12 times.  I duplicated it
  115. '  for purposes of clarity -- so you can see the 'flow' exactly, rather
  116. '  than follow the logic through a maze of subs.
  117.  
  118. center 24, SPACE$(70)
  119. center 24, "You touched F Key #" + STR$(FkeyPressed)
  120. SLEEP 1: center 24, SPACE$(70)
  121. center 24, "         Touch an F key to Select.                  "
  122.  
  123. menu01
  124.  
  125.  
  126. END SUB
  127.  
  128. SUB menu02
  129.  
  130. COLOR 0, 7
  131. CALL drawBox(2, 28, 11, 55)
  132.  
  133.     LOCATE 2, 34: COLOR 15, 0: PRINT " Menu Number Two ": COLOR 0, 7
  134.     LOCATE 3, 30: PRINT "Task #1              F1"
  135.     LOCATE 4, 30: PRINT "Task #2              F2"
  136.     LOCATE 5, 30: PRINT "Task #3              F3"
  137.     LOCATE 6, 30: PRINT "Task #4              F4"
  138.     LOCATE 7, 30: PRINT "Task #5              F5"
  139.     LOCATE 8, 30: PRINT "Task #6              F6"
  140.     windowBar 28, 55
  141.     LOCATE 10, 30: PRINT "Quit               F10"
  142.  
  143.     FkeySelect FkeyPressed
  144.  
  145.     SELECT CASE FkeyPressed
  146.         CASE 1
  147.         CASE 2
  148.         CASE 3
  149.         CASE 4
  150.         CASE 5
  151.         CASE 6
  152.         '    can always use up to 12 options, just make box bigger
  153.         CASE 10: EXIT SUB
  154.         CASE ELSE
  155.     END SELECT
  156.  
  157.  
  158. center 24, SPACE$(70)
  159. center 24, "You touched F Key #" + STR$(FkeyPressed)
  160. SLEEP 1: center 24, SPACE$(70)
  161. center 24, "         Touch an F key to Select.                  "
  162.  
  163. menu02
  164.  
  165.  
  166.  
  167. END SUB
  168.  
  169. SUB menu03
  170.  
  171. COLOR 0, 7
  172. CALL drawBox(2, 45, 11, 75)
  173.  
  174.     LOCATE 2, 50: COLOR 15, 0: PRINT " Menu Number Three ": COLOR 0, 7
  175.     LOCATE 3, 47: PRINT "Task #1              F1"
  176.     LOCATE 4, 47: PRINT "Task #2              F2"
  177.     LOCATE 5, 47: PRINT "Task #3              F3"
  178.     LOCATE 6, 47: PRINT "Task #4              F4"
  179.     LOCATE 7, 47: PRINT "Task #5              F5"
  180.     LOCATE 8, 47: PRINT "Task #6              F6"
  181.     windowBar 45, 75
  182.     LOCATE 10, 47: PRINT "Quit               F10"
  183.  
  184.     FkeySelect FkeyPressed
  185.  
  186.     SELECT CASE FkeyPressed
  187.         CASE 1
  188.         CASE 2
  189.         CASE 3
  190.         CASE 4
  191.         CASE 5
  192.         CASE 6
  193.         '    can always use up to 12 options, just make box bigger
  194.         CASE 10: EXIT SUB
  195.         CASE ELSE
  196.     END SELECT
  197.  
  198. center 24, SPACE$(70)
  199. center 24, "You touched F Key #" + STR$(FkeyPressed)
  200. SLEEP 1: center 24, SPACE$(70)
  201. center 24, "         Touch an F key to Select.                  "
  202.  
  203. menu03
  204.  
  205.  
  206.  
  207.  
  208. END SUB
  209.  
  210. SUB menu04
  211.  
  212. drawBox 2, 15, 6, 47
  213.  
  214. COLOR 15, 0: LOCATE 2, 22: PRINT " Menu Number Four ": COLOR 0, 7
  215. LOCATE 3, 18: PRINT "Go Do Task #1............F1"
  216. LOCATE 4, 18: PRINT "Go do Task #2............F2"
  217. LOCATE 5, 18: PRINT "Quit....................F10"
  218.  
  219. FkeySelect FkeyPressed
  220.  
  221. '  dim the title
  222.  
  223. COLOR 7, 0: LOCATE 2, 22: PRINT " Menu Number Four ": COLOR 0, 7
  224.  
  225. SELECT CASE FkeyPressed
  226.  
  227.     CASE 1
  228.     CASE 2
  229.     CASE 10: EXIT SUB
  230.     CASE ELSE
  231.  
  232. END SELECT
  233.  
  234. center 24, SPACE$(70)
  235. center 24, "    You touched F Key #" + STR$(FkeyPressed) + "   "
  236. SLEEP 1: center 24, SPACE$(70)
  237. center 24, "         Touch an F key to Select.                  "
  238.  
  239. menu04
  240.  
  241.  
  242. END SUB
  243.  
  244. SUB menu05
  245.  
  246. COLOR 0, 7: drawBox 2, 48, 11, 77
  247.  
  248. COLOR 15, 0: LOCATE 2, 54: PRINT " Menu Number Five ": COLOR 0, 7
  249.  
  250.     LOCATE 3, 52: PRINT "Go do Task #1........F1"
  251.     LOCATE 4, 52: PRINT "Go do Task #2........F2"
  252.     LOCATE 5, 52: PRINT "Go do Task #3........F3"
  253.     LOCATE 6, 52: PRINT "Go do Task #4........F4"
  254.     LOCATE 7, 52: PRINT "Go do Task #5........F5"
  255.     LOCATE 8, 52: PRINT "Go do Task #6........F6"
  256.     windowBar 48, 77
  257.     LOCATE 10, 52: PRINT "Quit..............F10"
  258.  
  259.     FkeySelect FkeyPressed
  260.  
  261.     ' dim the menu title
  262.  
  263.     COLOR 7, 0: LOCATE 2, 54: PRINT " Menu Number Five ": COLOR 0, 7
  264.  
  265.  
  266.     SELECT CASE FkeyPressed
  267.  
  268.         CASE 1
  269.         CASE 2
  270.         CASE 3
  271.         CASE 4
  272.         CASE 5
  273.         CASE 6
  274.         CASE 10
  275.             EXIT SUB
  276.         CASE ELSE
  277.             BEEP: SOUND 2000, 3: BEEP: BEEP
  278.  
  279.     END SELECT
  280.  
  281. '  each of the menus has this 'advisory' routine at the end of
  282. '  the SELECT CASE block, you probably won't need it and good
  283. '  programmming practices would suggest it should be in a separate
  284. '  SUB rather than being type over again 12 times.  I duplicated it
  285. '  for purposes of clarity -- so you can see the 'flow' exactly, rather
  286. '  than follow the logic through a maze of subs.
  287.  
  288. center 24, SPACE$(70)
  289. center 24, "    You touched F Key #" + STR$(FkeyPressed) + "   "
  290. SLEEP 1: center 24, SPACE$(70)
  291. center 24, "         Touch an F key to Select.                  "
  292.  
  293.     menu05
  294.  
  295. END SUB
  296.  
  297. SUB menu06
  298.  
  299. CALL drawBox(2, 2, 22, 78)
  300. LOCATE 20, 1: windowBar 2, 78
  301. CALL windowDivider(2, 18, 40)
  302.  
  303. COLOR 15, 0: center 2, "  Menu Six - When You Have a LOT to Say ": COLOR 0, 7
  304.  
  305. LOCATE 3, 4: PRINT "F1 = There is no practical reason "
  306. LOCATE 4, 4: PRINT "     why you can't have very ex-"
  307. LOCATE 5, 4: PRINT "     tensive menu selection "
  308. LOCATE 6, 4: PRINT "     descriptions -- if that "
  309. LOCATE 7, 4: PRINT "     what's you need.  This system "
  310. LOCATE 8, 4: PRINT "     can accomodate as much detail "
  311. LOCATE 9, 4: PRINT "     as you need."
  312. LOCATE 10, 4: PRINT "F2 = One Line is Fine too."
  313. LOCATE 11, 4: PRINT "F3 = Judicious use of the COLOR "
  314. LOCATE 12, 4: PRINT "     command "; : COLOR 15, 0: PRINT " means "; : COLOR 0, 7: PRINT " you can "
  315. LOCATE 13, 4: PRINT "     highlight words, phrases, "
  316. LOCATE 14, 4: PRINT "     or letters -- BUT the 'code' "
  317. LOCATE 15, 4: PRINT "     overhead goes up when you "
  318. LOCATE 16, 4: PRINT "     add such whistles and bells "
  319. LOCATE 17, 4: PRINT "     without much increase in func-"
  320. LOCATE 18, 4: PRINT "     tionality. "
  321. LOCATE 19, 4: PRINT "F4 = Call Another Menu Direct too!"
  322. COLOR 15, 0: center 21, "F10= Always quits a menu.": COLOR 0, 7
  323.  
  324. LOCATE 4, 42: PRINT "Judicious use of the SUBs: "
  325. LOCATE 5, 42: PRINT "windowBar ∙ windowDivider ∙"
  326. LOCATE 6, 42: PRINT "boxDraw ∙ means you can construct "
  327. LOCATE 7, 42: PRINT "very elaborate screens with a"
  328. LOCATE 8, 42: PRINT "absolute minimum of code & work."
  329. windowBar 40, 78
  330. COLOR 15, 0
  331. LOCATE 10, 41: PRINT " Even reverse those portions of the  "
  332. LOCATE 11, 41: PRINT " screen that deserve special empha-  "
  333. LOCATE 12, 41: PRINT " sis and operator attention while    "
  334. COLOR 7, 0
  335. LOCATE 13, 41: PRINT " leaving other portions "; CHR$(34); "dimmed out"; CHR$(34); " "
  336. LOCATE 14, 41: PRINT " before -- or after -- they are used."
  337. COLOR 0, 7
  338. windowBar 40, 78
  339. CALL drawBox(16, 57, 18, 63)
  340. p = 0
  341.  
  342. '  the following loop is an excellent example of the code overhead
  343. '  needed for -- seemingly -- incidental effects.  They do nothing
  344. '  to improve the function of the program but still are often needed
  345. '  or wanted for 'packaging' effect.
  346.  
  347. DO
  348.     p = p + 1
  349.     COLOR 30, 0
  350.     LOCATE 17, 58: PRINT " Ok? "
  351.     SLEEP 1
  352.     COLOR 23, 0
  353.     LOCATE 17, 58: PRINT " Ok? "
  354.     SLEEP 1
  355.     COLOR 7, 0
  356.     LOCATE 17, 58: PRINT " Ok? "
  357.     SLEEP 1
  358. LOOP UNTIL INKEY$ > ""
  359.  
  360. COLOR 0, 7
  361.  
  362. FkeySelect FkeyPressed
  363.  
  364. SELECT CASE FkeyPressed
  365.  
  366.     CASE 1
  367.     CASE 2
  368.     CASE 3
  369.     CASE 4
  370.     CASE 5
  371.     CASE 6
  372.     CASE 10: EXIT SUB
  373.  
  374. END SELECT
  375.  
  376. center 24, SPACE$(70)
  377. center 24, "    You touched F Key #" + STR$(FkeyPressed) + "   "
  378. SLEEP 1: center 24, SPACE$(70)
  379. center 24, "         Touch an F key to Select.                  "
  380.  
  381. menu06
  382.  
  383.  
  384.  
  385.  
  386.  
  387. END SUB
  388.  
  389. SUB menu07
  390.  
  391. drawBox 2, 35, 5, 66
  392.  
  393. COLOR 15, 0: LOCATE 2, 43: PRINT " Menu Number Seven ": COLOR 0, 7
  394. LOCATE 3, 37: PRINT "Stack Up Menus           F1"
  395. LOCATE 4, 37: PRINT "Quit                    F10"
  396.  
  397. FkeySelect FkeyPressed
  398. COLOR 7, 0: LOCATE 2, 22: PRINT " Special Programs ": COLOR 0, 7
  399.  
  400. SELECT CASE FkeyPressed
  401.  
  402.     CASE 1
  403.         menu06
  404.         menu09
  405.         menu01
  406.         menu02
  407.         menu11
  408.         menu12
  409.         menu03
  410.         menu04
  411.         menu08
  412.         menu05
  413.         menu07
  414.         
  415.     CASE 2
  416.  
  417.     CASE 10: EXIT SUB
  418.  
  419.     CASE 27      ' esc key was pressed
  420.  
  421.         EXIT SUB
  422.  
  423.  
  424.     CASE ELSE
  425.         SOUND 800, 1
  426.  
  427. END SELECT
  428.  
  429.  
  430. center 24, SPACE$(70)
  431. center 24, "You touched F Key #" + STR$(FkeyPressed)
  432. SLEEP 1: center 24, SPACE$(70)
  433. center 24, "         Touch an F key to Select.                  "
  434.  
  435. menu07
  436.  
  437.  
  438. END SUB
  439.  
  440. SUB menu08
  441.  
  442. COLOR 15, 0: drawBox 12, 35, 22, 66
  443. COLOR 0, 7: LOCATE 12, 41: PRINT " Menu Number Eight ": COLOR 15, 0
  444. LOCATE 13, 37: PRINT "Go ahead and 'reverse' the "
  445. LOCATE 14, 37: PRINT "contents of the window to"
  446. LOCATE 15, 37: PRINT "give it added emphasis."
  447. windowBar 35, 66
  448. LOCATE 21, 37: COLOR 0, 7: PRINT " F10 = Quits "
  449.  
  450.  
  451. FkeySelect FkeyPressed
  452.  
  453. IF FkeyPressed = 10 THEN
  454.     EXIT SUB
  455. ELSE
  456.     center 24, "   You pressed F Key #" + STR$(FkeyPressed) + "   "
  457.     SLEEP 1: center 24, SPACE$(70)
  458.     center 24, SPACE$(50)
  459.     center 24, "  Touch an F key to Select. "
  460.     menu08
  461. END IF
  462.  
  463. END SUB
  464.  
  465. SUB menu09
  466.  
  467. CALL drawBox(6, 20, 20, 60)
  468. COLOR 15, 0: center 6, "  Menu Nine ": COLOR 0, 7
  469.  
  470. LOCATE 7, 22: PRINT " F1 = Task 1 "
  471. LOCATE 8, 22: PRINT " F2 = Task 2"
  472. LOCATE 9, 22: PRINT " F3 = Task 3"
  473. LOCATE 10, 22: PRINT " F4 = Task 4"
  474. LOCATE 11, 22: PRINT " F5 = Task 5"
  475. LOCATE 12, 22: PRINT " F6 = Task 6"
  476. LOCATE 13, 22: PRINT " F7 = Task 7"
  477. LOCATE 14, 22: PRINT " F8 = Task 8"
  478. LOCATE 15, 22: PRINT " F9 = Task 9"
  479. LOCATE 16, 22: PRINT "F11 = Task 11"
  480. LOCATE 17, 22: PRINT "F12 = Task 12"
  481. windowBar 20, 60
  482. COLOR 15, 0: center 19, " F10= Always quits a menu ": COLOR 0, 7
  483.  
  484. FkeySelect FkeyPressed
  485.  
  486. SELECT CASE FkeyPressed
  487.  
  488.     CASE 1
  489.     CASE 2
  490.     CASE 3
  491.     CASE 4
  492.     CASE 5
  493.     CASE 6
  494.     CASE 7
  495.     CASE 8
  496.     CASE 9
  497.     CASE 10: EXIT SUB
  498.     CASE 11
  499.     CASE 12
  500.  
  501. END SELECT
  502.  
  503. center 24, SPACE$(70)
  504. center 24, "    You touched F Key #" + STR$(FkeyPressed) + "   "
  505. SLEEP 1: center 24, SPACE$(70)
  506. center 24, "         Touch an F key to Select.                  "
  507.  
  508. menu09
  509.  
  510. END SUB
  511.  
  512. SUB menu10
  513.  
  514. '      There can be no menu 10 because the F10 key is used to quit all
  515. '      menus.  Give it a lot of thought before you change this method...
  516. '      you could wind up in an unbreakable loop.
  517.  
  518. END SUB
  519.  
  520. SUB menu11
  521.  
  522. '   Remember that some older keyboards only have ten function keys, a
  523. '   conservative design would only depend on their being ten function
  524. '   keys rather than 12
  525.  
  526.  
  527. CALL drawBox(10, 5, 23, 21)
  528. COLOR 15, 0: LOCATE 10, 7: PRINT "  Menu Eleven ": COLOR 0, 7
  529.  
  530. LOCATE 11, 7: PRINT " F1 = Task 1 "
  531. LOCATE 12, 7: PRINT " F2 = Task 2"
  532. LOCATE 13, 7: PRINT " F3 = Task 3"
  533. LOCATE 14, 7: PRINT " F4 = Task 4"
  534. LOCATE 15, 7: PRINT " F5 = Task 5"
  535. LOCATE 16, 7: PRINT " F6 = Task 6"
  536. LOCATE 17, 7: PRINT " F7 = Task 7"
  537. LOCATE 18, 7: PRINT " F8 = Task 8"
  538. LOCATE 19, 7: PRINT " F9 = Task 9"
  539. LOCATE 20, 7: PRINT "F10 = Quits"
  540. LOCATE 21, 7: PRINT "F11 = Task 11"
  541. LOCATE 22, 7: PRINT "F12 = Task 12"
  542.  
  543. FkeySelect FkeyPressed
  544.  
  545. ' dim the menu title
  546.  
  547. COLOR 7, 0: LOCATE 10, 7: PRINT "  Menu Eleven ": COLOR 0, 7
  548.  
  549. SELECT CASE FkeyPressed
  550.  
  551.     CASE 1
  552.     CASE 2
  553.     CASE 3
  554.     CASE 4
  555.     CASE 5
  556.     CASE 6
  557.     CASE 7
  558.     CASE 8
  559.     CASE 9
  560.     CASE 10: EXIT SUB
  561.     CASE 11
  562.     CASE 12
  563.  
  564. END SELECT
  565.  
  566. center 24, SPACE$(70)
  567. center 24, "    You touched F Key #" + STR$(FkeyPressed) + "   "
  568. SLEEP 1: center 24, SPACE$(70)
  569. center 24, "         Touch an F key to Select.                  "
  570.  
  571. menu11
  572.  
  573.  
  574. END SUB
  575.  
  576. SUB menu12
  577.  
  578. '   Remember that some older keyboards only have ten function keys, a
  579. '   conservative design would only depend on their being ten function
  580. '   keys rather than 12
  581.  
  582. CALL drawBox(5, 60, 18, 78)
  583. COLOR 15, 0: LOCATE 5, 63: PRINT "  Menu Twelve ": COLOR 0, 7
  584.  
  585. LOCATE 6, 62: PRINT " F1 = Use as "
  586. LOCATE 7, 62: PRINT " F2 = a Pick"
  587. LOCATE 8, 62: PRINT " F3 = List if"
  588. LOCATE 9, 62: PRINT " F4 = You Like."
  589. LOCATE 10, 62: PRINT " F5 = TWOTAP"
  590. LOCATE 11, 62: PRINT " F6 = is very"
  591. LOCATE 12, 62: PRINT " F7= flexible!"
  592. LOCATE 13, 62: PRINT " F8 = Call other"
  593. LOCATE 14, 62: PRINT " F9 = Menus "
  594. COLOR 15, 0: LOCATE 15, 62: PRINT " F10 = Quits ": COLOR 0, 7
  595. LOCATE 16, 62: PRINT "F11 = directly"
  596. LOCATE 17, 62: PRINT "F12 = too.   "
  597.  
  598. FkeySelect FkeyPressed
  599.  
  600. SELECT CASE FkeyPressed
  601.  
  602.     CASE 1
  603.     CASE 2
  604.     CASE 3
  605.     CASE 4
  606.     CASE 5
  607.     CASE 6
  608.     CASE 7
  609.     CASE 8
  610.     CASE 9
  611.     CASE 10: EXIT SUB
  612.     CASE 11
  613.     CASE 12
  614.  
  615. END SELECT
  616.  
  617. center 24, SPACE$(70)
  618. center 24, "    You touched F Key #" + STR$(FkeyPressed) + "   "
  619. SLEEP 1: center 24, SPACE$(70)
  620. center 24, "         Touch an F key to Select.                  "
  621.  
  622. menu12
  623.  
  624. END SUB
  625.  
  626. SUB menuMain
  627.  
  628. 'select from items displayed on top line of the screen
  629. CLS
  630. COLOR 0, 7
  631.  
  632. screenTexture
  633.  
  634. DIM mmSelection$(1 TO 12)
  635.  
  636. menuLoop:
  637.  
  638. COLOR 0, 7: drawBox 1, 1, 8, 55
  639.  
  640. mmSelection$(1) = "F1 = Menu 1         "
  641. mmSelection$(2) = "F2 = Menu 2 "
  642. mmSelection$(3) = "F3 = Menu 3 "
  643. mmSelection$(4) = "F4 = Menu 4"
  644. mmSelection$(5) = "F5 = Menu 5"
  645. mmSelection$(6) = "F6 = Menu 6"
  646. mmSelection$(7) = " F7 = Menu 7"
  647. mmSelection$(8) = " F8 = Menu 8"
  648. mmSelection$(9) = " F9 = Menu 9"
  649. mmSelection$(10) = "F10 = Quit           "
  650. mmSelection$(11) = "F11 = Menu 11"
  651. mmSelection$(12) = "F12 = Menu 12        "
  652.  
  653.     FOR md = 1 TO 6
  654.         LOCATE md + 1, 3: PRINT mmSelection$(md); TAB(30); mmSelection$(md + 6)
  655.     NEXT md
  656.  
  657. windowDivider 1, 7, 26
  658.  
  659. LOCATE 1, 10: COLOR 15, 0: PRINT " TwoTap Menuing System Main Menu ": COLOR 0, 7
  660.  
  661.  
  662. drawBox 23, 2, 25, 79
  663. center 24, "Touch an F key to select."
  664.  
  665. 'FOR tbp = 1 TO numberOfChoices
  666. '        LOCATE 2, 2 + colPos, 0: PRINT topBar1$(tbp);
  667. '        colPos = POS(1)
  668. '        itemLine(tbp) = CSRLIN
  669. '        itemCol(tbp) = POS(1)
  670. 'NEXT tbp
  671. 'STOP
  672. 'ic = ic + 1
  673.  
  674.  
  675. 'LOCATE itemLine(1), itemCol(1) - LEN(topBar1$(1)): COLOR 0, 7: PRINT topBar1$(1)'highlight 1st item
  676.  
  677. CALL FkeySelect(FkeyPressed)
  678.  
  679. ' now we 'dim' the Main Menu
  680. LOCATE 1, 10: COLOR 7, 0: PRINT " TwoTap Menuing System Main Menu ": COLOR 0, 7
  681.  
  682.     SELECT CASE FkeyPressed
  683.  
  684.         CASE 1
  685.             menu01
  686.         CASE 2
  687.             menu02
  688.         CASE 3
  689.             menu03
  690.         CASE 4
  691.             menu04
  692.         CASE 5
  693.             menu05
  694.         CASE 6
  695.             menu06
  696.         CASE 7
  697.             menu07
  698.         CASE 8
  699.             menu08
  700.         CASE 9
  701.             menu09
  702.         CASE 10
  703.             COLOR 15, 0
  704.             CLS
  705.             PRINT
  706.             PRINT , "Operator halted program. " + DATE$ + "        " + TIME$
  707.             PRINT
  708.             PRINT
  709.             PRINT
  710.             shareWare
  711.             END
  712.         CASE 11
  713.             menu11
  714.         CASE 12
  715.             menu12
  716.         CASE ELSE
  717.             SOUND 1700, 5: BEEP
  718.  
  719.     END SELECT
  720.  
  721.     CLS
  722.  
  723.     COLOR 0, 7
  724.  
  725.     screenTexture
  726.  
  727.     GOTO menuLoop
  728.  
  729.     STOP
  730.  
  731.  
  732.             STOP
  733.  
  734.  
  735.  
  736. END SUB
  737.  
  738.